Notes (Week 4 Monday)
These are the notes I wrote during the lecture.
If some set of numbers A
(i) contains Z, and
(ii) contains S n if it contains n,
then A contains all numbers.
If some set of numbers A
(B) Z ∈ A, and
(I) n ∈ A ⇒ S n ∈ A
then ∀n∈ℕ. n ∈ A
Q: Is the purpose to ensure the non-existence of
"external" numbers that have no path to 0
A: Yes: it implies that the numbers obtainable by
the axioms are the only numbers.
If we leave out the induction axiom, then we can't
disprove the existence of a number ω
s.t.
ω = S ω
.. < 1/4 < 1/2 < 1
Q: Does observing that there's no minimal element
prove that it's not well-founded?
A: Yes!
R is well-founded
is equivalent to
every non-empty subset of R has a
minimal element
0 < 1 < 2 < 3
0 > -2 > -3
all the numbers divisibe by 8
⊆
all the numbers divisibe by 4
⊆
all the even numbers
⊆
ℕ
ℕ ⊆ ℕ
z(λ) = λ
z(aw) = 0(z(w))
z(10w) = 0(z(0w))
^ the number of 0s in the arguments to z are the
same on both left and right
open bossLib listTheory rich_listTheory
arithmeticTheory;
Definition z_def:
z([]) = [] ∧
z([a]) = [0] ∧
z(a::b::w) = 0::z(0::w)
End
Theorem z_zeroizes:
z w = REPLICATE (LENGTH w) 0
Proof
Induct_on ‘w’ (* structural induction *)
>- rw[z_def] >>
strip_tac >>
Cases_on ‘w’
>- rw[z_def,REPLICATE_compute] >>
rw[z_def] >>
Cases_on ‘t’ >> gvs[z_def]
QED
Theorem z_zeroizes:
z w = REPLICATE (LENGTH w) 0
Proof
Induct_on ‘LENGTH w’ using COMPLETE_INDUCTION >>
rw[]
Cases_on ‘w’
>- rw[z_def] >>
Cases_on ‘t’ >>
gvs[z_def,REPLICATE_compute]
QED
⊤⊤∧∧∧∧∧)))))) ∈ Σ*
a ∧ b ∨ c
(a ∧ b) ∨ c
a ∧ (b ∨ c)
¬a ∧ b denotes ((¬a) ∧ b)
a ∧ b ∨ c denotes ((a ∧ b) ∨ c)
p → q → r parses as p → (q → r)
which is *different from*
(p → q) → r
p → (q → r) ≡ (p ∧ q) → r
if p holds,
then if q holds, r also holds
if p and q holds, then r holds
In the same way that in posets you can
instantiate (R,≺) in various ways
to obtain specific posets
We can instantiate
T,0,1,∧,∨,'
in various ways to obtain specific boolean
algebras
In the two-element boolean algebra
we use && (like in C) for conjunction
But in propositional logic formulas
we use ∧ for conjunction
&& computes a truth value
∧ builds a bigger formula
true && true = true (syntactically equals)
⊤ ∧ ⊤ ≠ ⊤ (syntactically)
^ because the LHS and RHS have different
parse trees
𝓟(𝓤) = {{∅},∅}
if we imagine that false = ∅
and true = {∅}
true && false = false
{∅} ∩ {} = {}
Here's the stupidest Boolean algebra:
the one-element algebra
({x},∨,∧,',x,x)
where x ∧ x = x
x ∨ x = x
x' = x
all the laws hold in this algebra,
because in a world where there's only
one thing, everything is equal.
In this Boolean algebra:
e' = e
^ but we can't prove this from the Boolean
algebra laws only.
a ∧ b
⟦ ⟧ "semantic brackets"
convention:
if φ is a piece of syntax
then ⟦φ⟧ reads "the semantics of φ"
⟦φ⟧v "the semantics of the formula φ
under the valuation v"
These brackets are just fancy notation
for a function, we could call it "eval"
instead of writing ⟦φ⟧v
we could have written
(say) eval(φ,v)